home *** CD-ROM | disk | FTP | other *** search
/ Aminet 41 / Aminet 41 (2001)(Schatztruhe)[!][Feb 2001].iso / Aminet / comm / tcp / rxsocket.lha / rxsocket / examples / echoudp.rexx < prev    next >
OS/2 REXX Batch file  |  2000-11-28  |  1KB  |  58 lines

  1. /*
  2.     A very simple echo udp client.
  3.     Shows how to use an UDP service.
  4.     To test it on localhost, be sure echo/UDP service is enabled
  5.     in services and inted database.
  6.     rx echoudp localhost
  7. */
  8.  
  9. if ~open("STDERR","*","W") then STDERR="STDOUT"
  10.  
  11. l="rmh.library";if ~show("L",l) then;if ~addlib(l,0,-30) then exit
  12. prg=ProgramName("NOEXT")
  13. if AddLibrary("rexxsupport.library","rxsocket.library")~=0 then
  14.     call err "can't find" result,1
  15.  
  16. if ~RMH_ReadArgs("HOST/A") then do
  17.     call PrintFault(IoErr(),prg)
  18.     exit
  19. end
  20.  
  21. addr = resolve(parm.0.value)
  22. if addr=="-1" then call err "no host <"parm.0.value">",1
  23.  
  24. if ~getservbyname("SE","echo","udp") then
  25.     call err "echo tcp service not found"
  26.  
  27. remote.addrFamily = "INET"
  28. remote.addrAddr   = addr
  29. remote.addrPort   = se.servPort
  30.  
  31. sock = socket("INET","DGRAM","IP")
  32. if sock<0 then call err "no socket"
  33.  
  34. local.addrFamily = "INET"
  35. local.addrAddr     = 0
  36. local.addrPort   = 0
  37. /*if bind(sock,"LOCAL")<0 then call err "bind error"*/
  38.  
  39. data = "echo udp service test"
  40. n = SendTo(sock,data,0,"REMOTE")
  41. if n<length(data) then call err "sendto error"
  42.  
  43. len = RecvFrom(sock,"BUF",256,0,"REMOTE")
  44. if len<0 then call err "recvfrom error"
  45.  
  46. say buf
  47. call CloseSocket(sock)
  48. exit
  49.  
  50. err:
  51. parse arg msg,noerr
  52.     if noerr~=1 then do
  53.         es="("ErrorString(Errno())")"
  54.     end
  55.     else es=""
  56.     call Writeln(STDERR,prg": "msg es)
  57.     exit
  58.